A thermometer coded output filter receives a binary coded input and provides a filtered value as a thermometer coded output. In binary coding, each bit represents a given power of two, depending on its place in the digital word. Accordingly, the first, or most significant bit, is more heavily weighted than the last bit. In a thermometer coded output, each bit is weighted equally, such that the value of the thermometer coded output is a function of the respective numbers of ones and zeros, not their associated places within a digital word.
FIG. 1 illustrates an example of a four tap finite impulse response filter 10. The filter 10 includes a first delay element 12, a second delay element 14, and a third delay element 16 connected in series. A digital input stream is passed through the delay elements to produce a four bit word, comprising the input to the first delay element 12 (X3) and the respective outputs (X2–X0) of the first, second, and third delay elements 12, 14, and 16. Each bit of the four bit word is provided as an input to an associated one of a plurality of multipliers 22, 24, 26, and 28. Each multiplier (e.g., 22) outputs an associated constant when its associated input bit is one, and the additive inverse of its associated constant when its associated input bit is zero. The output of the multipliers 22, 24, 26, and 28 are summed at a series of adders 32, 34, and 36. The output of the last adder 36 in the series provides the filter output.
FIG. 2 illustrates an example of a thermometer coded output finite impulse response filter 50. The filter 50 includes a series of delay elements 52 that allow an N bit word to be extracted from a digital input stream for processing, where N is an integer greater than one. For example, the delay elements 52 can comprise a series of flip-flops, each holding a digital value representing a bit in the input stream. The extracted N bit word is provided to a lookup table 54. The lookup table 54 contains a series of 2N addresses, representing each possible value for the N bit word. Each address has a corresponding thermometer coded output comprising 2N−1 bits. The input word is matched to one of the series of addresses, and a corresponding thermometer coded output is provided as the filter output. It will be appreciated that for an N bit input, the lookup table 54 requires the storage of 2N×2N−1 bits to represent the N thermometer coded outputs. Each bit of storage consumes circuit board space, making the implementation of large lookup tables inefficient.